iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Software Development

【30歲學Coding轉職心法】從0到1的C#軟體工程師之路系列 第 29

【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-29.擅用開發工具學C#(8)例外處理

  • 分享至 

  • xImage
  •  

前篇講了語法錯誤訊息的處理方式,但還有一種錯誤是語法看似沒問題,但實際執行偵錯的時候才發生錯誤,稱為「例外(Exception)」。例外發生的狀況有非常多種,族繁不及備載。

舉例來說,下面的程式碼如果實際執行會出現DivideByZeroException例外,有學過數學就知道數字除以0會等於無限大or無定義,所以這樣子程式碼執行就會有錯誤。

        static void Main(string[] args)
        {
            var x = 1;
            var result = x / 0;
            Console.WriteLine(result);
            Console.ReadLine();
        }

https://ithelp.ithome.com.tw/upload/images/20230928/20160592voyvea56wp.png

一般來說,遇到例外可以使用Try Catch語法來處理,可以參考下面文章或上課時好好學習,這個如果課程沒教或自學沒學到都不行呀!
https://hoohoo.top/blog/exception-handling-in-c-teaching-notes-using-visual-studio/
https://jprogramstudy.com/608/

但使用時需要注意幾個重點:

  1. 可以用程式方式檢查出的問題,不要使用例外處理(效能問題)
  2. catch到例外後務必進行處理(ex: throw),catch內不要空白不處理
  3. throw的內容可再進行包裝(避免原始碼和錯誤訊息直接被User看到)

最後附上上面Code加了Try Catch後的範例:

        static void Main(string[] args)
        {
            try
            {
                var x = 1;
                var result = x / 0;
                Console.WriteLine(result);
            }
            catch (Exception e) //將例外狀況放在e變數
            {
                Console.WriteLine(e.ToString());//,可將e轉成字串,後續可write to db....
            }
        }

執行結果就不會出現例外了,而是把例外訊息寫出來,讓程式不會卡死。


上一篇
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-28.擅用開發工具學C#(7)看懂錯誤訊息與除錯
下一篇
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路-30.結語-朝理想前進
系列文
【30歲學Coding轉職心法】從0到1的C#軟體工程師之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言